class Anagrafiche::VeicoliController < DefaultController
  require_role self.parent_name.underscore

  record_select :search_on => [:numero, :targa, :modello], :order_by => 'numero', :full_text_search => true

  active_scaffold :veicolo do | config|
    config.label = Application.controller_label(self)
    config.subform.columns = [:numero, :targa, :modello]
    list.sorting = {:numero => 'ASC'}
    config.actions.add :config_list, :export

    # visualizzazione colonne
    columns = [ :numero, :targa, :marca, :modello, :tipo_veicolo, :tipo_alimentazione, :categoria_euro,
      :data_immatricolazione, :data_acquisto, :descrizione, :scadenza_premio_assicurazione, :polizze, :data_dismissione, :centri_costo ]
    columns_list = [ :numero, :marca, :targa, :modello, :tipo_veicolo, :scadenza_premio_assicurazione, :polizze, :descrizione, :centri_costo ]
    config.columns =  config.list.columns = config.show.columns = columns
    config.config_list.default_columns = columns_list
    config.create.columns.exclude :polizze, :scadenza_premio_assicurazione
    config.update.columns.exclude :polizze, :scadenza_premio_assicurazione
    config.search.columns.add :note

    ## configurazione colonne
    config.columns[:tipo_veicolo].options = {:options => Veicolo::TIPO_VEICOLO.map(&:to_sym), :include_blank => as_(:_select_)}
    config.columns[:tipo_alimentazione].options = {:options => Veicolo::TIPO_ALIMENTAZIONE.map(&:to_sym), :include_blank => as_(:_select_)}
    config.columns[:categoria_euro].options = {:options => Veicolo::CATEGORIA_EURO.map(&:to_sym), :include_blank => as_(:_select_)}
    [:tipo_veicolo, :tipo_alimentazione, :categoria_euro, :centri_costo].each { |i| config.columns[i].form_ui = :select }
    [:marca, :modello, :descrizione, :tipo_veicolo, :tipo_alimentazione, :categoria_euro, :centri_costo].each { |i|
      config.columns[i].inplace_edit = :ajax 
    }
    [:data_acquisto, :data_immatricolazione, :data_dismissione].each { |i| 
      config.columns[i].form_ui = :calendar_date_select
    }
    [:data_acquisto, :data_immatricolazione].each { |i|
      config.columns[i].options = {:year_range => [20.years.ago, 0.years.ago]}
    }   
    [:data_dismissione].each { |i|
      config.columns[i].options = {:year_range => [2.years.ago, 2.years.from_now]}
    }
    [:descrizione].each { |i| config.columns[i].options = SMALL_TEXTAREA }

    
    ## azioni
    config.action_links.add "Note", :action => 'nested', :parameters => {:associations => :note}, :type => :member
    config.action_links.add "Allegati", :action => 'nested', :parameters => {:associations => :allegati}, :type => :member
    config.columns[:centri_costo].clear_link
    
    ## ricerca
    config.columns[:note].search_sql = 'note.testo'
  end

  def all
    params[:filter] = 'all'
    active_scaffold_config.label = Application.controller_label(self) + " (tutti)"
    index
  end

  def attivi
    params[:filter] = 'attivi'
    active_scaffold_config.label = Application.controller_label(self) + " (attivi)"
    index
  end

  protected

  def set_conditions
    case params[:filter]
    when 'all'
      []
    when 'attivi'
      ['data_dismissione IS NULL']
    else
      []
    end
  end
  
  def conditions_for_collection
    set_conditions
  end

  def record_select_conditions_from_controller
    set_conditions
  end 
end
